<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/ir_Xmp.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">IRremoteESP8266
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">ir_Xmp.cpp File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Support for XMP protocols.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceIRXmpUtils"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRXmpUtils.html">IRXmpUtils</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a60f5e4774b9ff0e08ae54844b132d5fb"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRXmpUtils.html#a60f5e4774b9ff0e08ae54844b132d5fb">IRXmpUtils::getSectionChecksum</a> (const uint32_t data, const uint16_t nbits)</td></tr>
<tr class="memdesc:a60f5e4774b9ff0e08ae54844b132d5fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the current checksum value from an XMP data section.  <a href="namespaceIRXmpUtils.html#a60f5e4774b9ff0e08ae54844b132d5fb">More...</a><br /></td></tr>
<tr class="separator:a60f5e4774b9ff0e08ae54844b132d5fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a170c46b9aa59d1717fdff6f932353dca"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRXmpUtils.html#a170c46b9aa59d1717fdff6f932353dca">IRXmpUtils::calcSectionChecksum</a> (const uint32_t data, const uint16_t nbits)</td></tr>
<tr class="memdesc:a170c46b9aa59d1717fdff6f932353dca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the correct checksum value for an XMP data section.  <a href="namespaceIRXmpUtils.html#a170c46b9aa59d1717fdff6f932353dca">More...</a><br /></td></tr>
<tr class="separator:a170c46b9aa59d1717fdff6f932353dca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ada8200316c402f268dd621a3b0695a"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRXmpUtils.html#a0ada8200316c402f268dd621a3b0695a">IRXmpUtils::updateChecksums</a> (const uint64_t data, const uint16_t nbits)</td></tr>
<tr class="memdesc:a0ada8200316c402f268dd621a3b0695a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recalculate a XMP message code ensuring it has the checksums valid.  <a href="namespaceIRXmpUtils.html#a0ada8200316c402f268dd621a3b0695a">More...</a><br /></td></tr>
<tr class="separator:a0ada8200316c402f268dd621a3b0695a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbf7d8c8f73c5c9beca3094871d6a7c2"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRXmpUtils.html#adbf7d8c8f73c5c9beca3094871d6a7c2">IRXmpUtils::calcRepeatOffset</a> (const uint16_t nbits)</td></tr>
<tr class="memdesc:adbf7d8c8f73c5c9beca3094871d6a7c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the bit offset the repeat nibble in an XMP code.  <a href="namespaceIRXmpUtils.html#adbf7d8c8f73c5c9beca3094871d6a7c2">More...</a><br /></td></tr>
<tr class="separator:adbf7d8c8f73c5c9beca3094871d6a7c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25e2d3af57d86fecf7b01b6a0639d0cc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRXmpUtils.html#a25e2d3af57d86fecf7b01b6a0639d0cc">IRXmpUtils::isRepeat</a> (const uint64_t data, const uint16_t nbits)</td></tr>
<tr class="memdesc:a25e2d3af57d86fecf7b01b6a0639d0cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if an XMP message code is a repeat or not.  <a href="namespaceIRXmpUtils.html#a25e2d3af57d86fecf7b01b6a0639d0cc">More...</a><br /></td></tr>
<tr class="separator:a25e2d3af57d86fecf7b01b6a0639d0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e7705ba4373589a651e662a3debb0a8"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRXmpUtils.html#a8e7705ba4373589a651e662a3debb0a8">IRXmpUtils::adjustRepeat</a> (const uint64_t data, const uint16_t nbits, const uint8_t repeat_code)</td></tr>
<tr class="memdesc:a8e7705ba4373589a651e662a3debb0a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adjust an XMP message code to make it a valid repeat or non-repeat code.  <a href="namespaceIRXmpUtils.html#a8e7705ba4373589a651e662a3debb0a8">More...</a><br /></td></tr>
<tr class="separator:a8e7705ba4373589a651e662a3debb0a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a9c09decb9eaa8afd6b2053c142e87db9"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ir__Xmp_8cpp.html#a9c09decb9eaa8afd6b2053c142e87db9">kXmpMark</a> = 210</td></tr>
<tr class="memdesc:a9c09decb9eaa8afd6b2053c142e87db9"><td class="mdescLeft">&#160;</td><td class="mdescRight">uSeconds.  <a href="ir__Xmp_8cpp.html#a9c09decb9eaa8afd6b2053c142e87db9">More...</a><br /></td></tr>
<tr class="separator:a9c09decb9eaa8afd6b2053c142e87db9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abefc09e9ed818c7efb3bbdda98e30be1"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ir__Xmp_8cpp.html#abefc09e9ed818c7efb3bbdda98e30be1">kXmpBaseSpace</a> = 760</td></tr>
<tr class="memdesc:abefc09e9ed818c7efb3bbdda98e30be1"><td class="mdescLeft">&#160;</td><td class="mdescRight">uSeconds  <a href="ir__Xmp_8cpp.html#abefc09e9ed818c7efb3bbdda98e30be1">More...</a><br /></td></tr>
<tr class="separator:abefc09e9ed818c7efb3bbdda98e30be1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f0b555035f665354c5743208d52d5b9"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ir__Xmp_8cpp.html#a4f0b555035f665354c5743208d52d5b9">kXmpSpaceStep</a> = 135</td></tr>
<tr class="memdesc:a4f0b555035f665354c5743208d52d5b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">uSeconds  <a href="ir__Xmp_8cpp.html#a4f0b555035f665354c5743208d52d5b9">More...</a><br /></td></tr>
<tr class="separator:a4f0b555035f665354c5743208d52d5b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83012cfefe50c5f8b2b13315e72dc1f1"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ir__Xmp_8cpp.html#a83012cfefe50c5f8b2b13315e72dc1f1">kXmpFooterSpace</a> = 13000</td></tr>
<tr class="memdesc:a83012cfefe50c5f8b2b13315e72dc1f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">uSeconds.  <a href="ir__Xmp_8cpp.html#a83012cfefe50c5f8b2b13315e72dc1f1">More...</a><br /></td></tr>
<tr class="separator:a83012cfefe50c5f8b2b13315e72dc1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad678abebb2d8ccfd578e7c1d70f44987"><td class="memItemLeft" align="right" valign="top">const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ir__Xmp_8cpp.html#ad678abebb2d8ccfd578e7c1d70f44987">kXmpMessageGap</a> = 80400</td></tr>
<tr class="memdesc:ad678abebb2d8ccfd578e7c1d70f44987"><td class="mdescLeft">&#160;</td><td class="mdescRight">uSeconds.  <a href="ir__Xmp_8cpp.html#ad678abebb2d8ccfd578e7c1d70f44987">More...</a><br /></td></tr>
<tr class="separator:ad678abebb2d8ccfd578e7c1d70f44987"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1974129b35ffdb85f3a1727aa5509b9f"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ir__Xmp_8cpp.html#a1974129b35ffdb85f3a1727aa5509b9f">kXmpWordSize</a> = <a class="el" href="IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846">kNibbleSize</a></td></tr>
<tr class="memdesc:a1974129b35ffdb85f3a1727aa5509b9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">nr. of Bits in a word.  <a href="ir__Xmp_8cpp.html#a1974129b35ffdb85f3a1727aa5509b9f">More...</a><br /></td></tr>
<tr class="separator:a1974129b35ffdb85f3a1727aa5509b9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab54dbf1bdf33d8f7e7413723980dc518"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ir__Xmp_8cpp.html#ab54dbf1bdf33d8f7e7413723980dc518">kXmpMaxWordValue</a> = (1 &lt;&lt; <a class="el" href="ir__Xmp_8cpp.html#a1974129b35ffdb85f3a1727aa5509b9f">kXmpWordSize</a>) - 1</td></tr>
<tr class="separator:ab54dbf1bdf33d8f7e7413723980dc518"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab20e02ac019d4eb974f06e531a9af5c0"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ir__Xmp_8cpp.html#ab20e02ac019d4eb974f06e531a9af5c0">kXmpSections</a> = 2</td></tr>
<tr class="memdesc:ab20e02ac019d4eb974f06e531a9af5c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Nr. of Data sections.  <a href="ir__Xmp_8cpp.html#ab20e02ac019d4eb974f06e531a9af5c0">More...</a><br /></td></tr>
<tr class="separator:ab20e02ac019d4eb974f06e531a9af5c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cdde1ffa7ba5186dfcfc3660966ce9d"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ir__Xmp_8cpp.html#a7cdde1ffa7ba5186dfcfc3660966ce9d">kXmpRepeatCode</a> = 0b1000</td></tr>
<tr class="separator:a7cdde1ffa7ba5186dfcfc3660966ce9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34460e1fdf809f8b87c1da2942124c49"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ir__Xmp_8cpp.html#a34460e1fdf809f8b87c1da2942124c49">kXmpRepeatCodeAlt</a> = 0b1001</td></tr>
<tr class="separator:a34460e1fdf809f8b87c1da2942124c49"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Support for XMP protocols. </p>
<dl class="section see"><dt>See also</dt><dd><a href="https://github.com/crankyoldgit/IRremoteESP8266/issues/1414">https://github.com/crankyoldgit/IRremoteESP8266/issues/1414</a> </dd>
<dd>
<a href="http://www.hifi-remote.com/wiki/index.php/XMP">http://www.hifi-remote.com/wiki/index.php/XMP</a> </dd></dl>
</div><h2 class="groupheader">Variable Documentation</h2>
<a id="abefc09e9ed818c7efb3bbdda98e30be1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abefc09e9ed818c7efb3bbdda98e30be1">&#9670;&nbsp;</a></span>kXmpBaseSpace</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const uint16_t kXmpBaseSpace = 760</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>uSeconds </p>

</div>
</div>
<a id="a83012cfefe50c5f8b2b13315e72dc1f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83012cfefe50c5f8b2b13315e72dc1f1">&#9670;&nbsp;</a></span>kXmpFooterSpace</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const uint16_t kXmpFooterSpace = 13000</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>uSeconds. </p>

</div>
</div>
<a id="a9c09decb9eaa8afd6b2053c142e87db9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c09decb9eaa8afd6b2053c142e87db9">&#9670;&nbsp;</a></span>kXmpMark</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const uint16_t kXmpMark = 210</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>uSeconds. </p>

</div>
</div>
<a id="ab54dbf1bdf33d8f7e7413723980dc518"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab54dbf1bdf33d8f7e7413723980dc518">&#9670;&nbsp;</a></span>kXmpMaxWordValue</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const uint8_t kXmpMaxWordValue = (1 &lt;&lt; <a class="el" href="ir__Xmp_8cpp.html#a1974129b35ffdb85f3a1727aa5509b9f">kXmpWordSize</a>) - 1</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ad678abebb2d8ccfd578e7c1d70f44987"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad678abebb2d8ccfd578e7c1d70f44987">&#9670;&nbsp;</a></span>kXmpMessageGap</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const uint32_t kXmpMessageGap = 80400</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>uSeconds. </p>

</div>
</div>
<a id="a7cdde1ffa7ba5186dfcfc3660966ce9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cdde1ffa7ba5186dfcfc3660966ce9d">&#9670;&nbsp;</a></span>kXmpRepeatCode</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const uint8_t kXmpRepeatCode = 0b1000</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a34460e1fdf809f8b87c1da2942124c49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a34460e1fdf809f8b87c1da2942124c49">&#9670;&nbsp;</a></span>kXmpRepeatCodeAlt</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const uint8_t kXmpRepeatCodeAlt = 0b1001</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ab20e02ac019d4eb974f06e531a9af5c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab20e02ac019d4eb974f06e531a9af5c0">&#9670;&nbsp;</a></span>kXmpSections</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const uint8_t kXmpSections = 2</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Nr. of Data sections. </p>

</div>
</div>
<a id="a4f0b555035f665354c5743208d52d5b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f0b555035f665354c5743208d52d5b9">&#9670;&nbsp;</a></span>kXmpSpaceStep</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const uint16_t kXmpSpaceStep = 135</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>uSeconds </p>

</div>
</div>
<a id="a1974129b35ffdb85f3a1727aa5509b9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1974129b35ffdb85f3a1727aa5509b9f">&#9670;&nbsp;</a></span>kXmpWordSize</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const uint8_t kXmpWordSize = <a class="el" href="IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846">kNibbleSize</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>nr. of Bits in a word. </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>
